package web.controllers;

import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modelovectorial.DocumentoPDF;
import modelovectorial.SearchResultStats;
import soporte.web.Pagination;
import web.utils.BrowserInformation;

/**
 * @project DLC Final / UTN FRC 2013
 * @date Febrero de 2013
 *
 * @author Gonzalo Arribere
 * @author Gustavo Morales
 * @author Pablo Moreno
 */
public class BrowseDocuments extends HttpServlet
{

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        int page = 1;
        try
        {
            String strPage = (String) request.getParameter ("page");
            if (strPage != null)
            {
                page = Integer.parseInt (strPage);
            }
        }
        catch (Exception e)
        {
            page = 1;
        }

        Pagination pagination = new Pagination (page);
        int totalDocuments = DocumentoPDF.getTotalDocuments ();


        pagination.buildPagination (totalDocuments);


        DocumentoPDF documentos[] = DocumentoPDF.browseDocumentos (pagination);

        SearchResultStats stats = new SearchResultStats ();
        stats.setTotalResults (totalDocuments);
        stats.setSelectedPage (page);
        stats.setMaxPages (Pagination.calculateMaxPages (stats.getTotalResults ()));

        request.setAttribute ("stats", stats);
        request.setAttribute ("results", documentos);
        

        RequestDispatcher dispatcher = request.getRequestDispatcher
                ((BrowserInformation.isMovileBrowser (request)) ? SitePages.MOVILE_BROWSE : SitePages.PAGE_BROWSE);
        dispatcher.forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        processRequest (request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException
    {
        processRequest (request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo ()
    {
        return "Short description";
    }// </editor-fold>
}
